package com.jay.fault.retry;

import com.jay.model.RpcResponse;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.Callable;

/**
 * 重试策略 - 不重试
 * 该类实现了RetryStrategy接口，提供了一种不进行重试的策略
 * 主要用于那些不需要重试操作的场景，通过实现RetryStrategy接口，
 * 与其他重试策略统一接口，便于管理和切换策略
 */
@Slf4j
public class NoRetryStrategy implements RetryStrategy {

    /**
     * 执行调用，但不进行重试
     * <p>
     * 此方法直接执行传入的Callable任务，不涉及任何重试逻辑
     * 它的存在是为了统一接口，使得在不重试的情况下，也可以使用相同的方式执行任务
     *
     * @param callable 一个 Callable 任务，期望返回 RpcResponse
     * @return RpcResponse 类型的结果，直接来自 Callable 任务
     * @throws Exception 如果执行 Callable 任务时抛出异常，则向调用者抛出此异常
     */
    public RpcResponse doRetry(Callable<RpcResponse> callable) throws Exception {
        return callable.call();
    }

}

